1. Field of the Invention
The present invention relates to the field of computer architecture, specifically to the field of event handling.
2. Description of Related Art
An event is any action or occurrence to which a computer system might respond, including what are commonly referred to as interrupts. An event may be either a processor or system generated event. Processor generated events (also commonly referred to as internal interrupts) are generated by the processor in response to certain predefined situations, division by zero for example. System generated events are generated by software (also commonly referred to as software interrupts) and by hardware that is external to the processor (also commonly referred to as external interrupts). A common system generated event is a request from a peripheral device for service. Upon recognition of an event, the processor of a computer system temporarily suspends the execution of the current process, saves the status of its work, and executes the appropriate handler to "handle" or "service" the event. Upon completion of the appropriate handler, the processor resumes the execution of the suspended process.
Interrupt Descriptor Table
To determine the starting address of the appropriate handler to execute in response to an event, an interrupt descriptor table (also termed an interrupt vector table) is commonly used. Various references describe the use and advantages of event handling using interrupt descriptor tables: Shanley, Tom and Anderson, Don, IS A System Architecture, published by MindShare, Inc., 1993 and hereinafter referred to as the Shanley reference; Jourdain, Robert, Programmer's Problem Solver for the IBM PC. XT. & AT, published by Brady Communications Company, Inc., 1986. As described in Shanley, the interrupt descriptor table is normally stored in a computer system's Random Access Memory (RAM) and contains the address of the corresponding handler for each interrupt. The addresses stored in an interrupt descriptor table are commonly referred to as pointers, vectors or descriptors. Upon the occurrence of an event, the processor determines which entry in the interrupt descriptor table corresponds to the event, accesses the pointer stored in that entry, and executes the handler to which that pointer points. In this manner, an interrupt is linked to a corresponding handler through an entry in the interrupt descriptor table.
Generally, certain entries in the interrupt descriptor table are used for processor generated events, while the remaining entries are utilized for system generated events. To provide an example, assuming 256 entries are available and entries 0-31 are used for processor generated events, the remaining entries 32-255 are available for system generated events. Furthermore, the same processor generated events are consistently assigned to the same entries so that products developed for previous processors are compatible with future processors.
It is now desirable to incorporate additional processor generated events that require additional entries. However, a problem lies in that the existing entries currently being used for processor generated events are still required and the remaining entries are potentially being employed for system generated events. If both a processor generated event and a system generated event share the same entry, the entry will be "over-loaded" (i.e. an entry can contain only one pointer, but the processor and system event handlers are located at different starting addresses). On the other hand, if the traditional entry assignments are altered to make entries available for new processor generated events, existing products may not be compatible.